Social search engine

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for a social search engine. In one aspect, a method includes receiving a question from an asker in which the question is associated with one or more topics; selecting candidate answerers based at least partly on each answerer&#39;s respective relationship to the asker; sending the question successively to groups of one or more candidate answerers according to the ranking until an answer is received from a particular one of the candidate answerers; and sending to the asker the received answer and information that identifies the particular answerer.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119(e) of U.S.Patent Application No. 61/256,324, entitled “REAL TIME, INTERACTIVEANSWERS IN A SOCIAL NETWORK ENVIRONMENT,” filed Oct. 30, 2009, which isincorporated herein by reference in its entirety.

This application claims the benefit under 35 U.S.C. §119(e) of U.S.Patent Application No. 61/256,325, entitled “METHOD FOR GENERATINGAFFILIATE REVENUE IN AN ONLINE MESSAGING SERVICE,” filed Oct. 30, 2009,which is incorporated herein by reference in its entirety.

BACKGROUND

This specification describes technologies relating to question andanswer services.

Traditionally, the basic paradigm in information retrieval has been thelibrary. While this paradigm has worked well in several contexts, itignores an age-old model for knowledge acquisition, which we shall call“the village paradigm”. In a village, knowledge dissemination isachieved socially—information is passed from person to person, and theretrieval task consists of finding the right person, rather than theright document, to answer a question.

In a library, people use keywords to search, the knowledge base iscreated by a small number of content publishers before the questions areasked, and trust is based on authority. In a village, by contrast,people use natural language to ask questions, answers are generated inreal-time by those in the community, and trust is based on intimacy.Real-time responses from socially proximal responders tend to elicit(and work well for) highly contextualized and subjective queries. Forexample, the following question is better answered by a friend than thelibrary: “Do you have any good babysitter recommendations in Palo Altofor my 6-year-old twins? I'm looking for somebody that won't let themwatch TV.”

SUMMARY

For situations in which the systems discussed here collect personalinformation about users, the users may be provided with an opportunityto opt in/out of programs or features that may collect personalinformation (e.g., information about a user's preferences or a user'scurrent location). A user may also be informed of the accompanyinglimitations on the functionality of a service that may result fromlimiting access to such personal information. In addition, certain datamay be anonymized in one or more ways before it is stored or used, sothat personally identifiable information is removed. For example, auser's identity may be anonymized so that the no personally identifiableinformation can be determined for the user, or a user's geographiclocation may be generalized where location information is obtained (suchas to a city, zip code, or state level), so that a particular locationof a user cannot be determined. In addition, some users may not want tobe associated with a certain topic for which they provide answers. Inthese cases, the users' privacy can be protected by providing minimal orno information that would identify the users. Moreover, users cancontrol how much identifying information is provided with their answers.

In general, one innovative aspect of the subject matter described inthis specification can be embodied in methods that include the actionsof receiving a question from an asker in which the question isassociated with one or more topics; ranking candidate answerers based atleast partly on each answerer's respective relationship to the asker anda respective probability that the answerer will provide a satisfactoryanswer to the question; sending the question successively to groups ofone or more candidate answerers according to the ranking until an answeris received from a particular one of the candidate answerers; andsending to the asker the received answer and information that identifiesthe particular answerer. Other embodiments of this aspect includecorresponding systems, apparatus, and computer programs, configured toperform the actions of the methods, encoded on computer storage devices.

These and other embodiments can each optionally include one or more ofthe following features. Ranking candidate answerers can be based atleast partly on a time of day and whether a candidate answerer in thecandidate answerers has been historically active during the time of dayor prefers not to be contacted during the time of day. Ranking candidateanswerers can be based at least partly on a whether a candidate answereris in the candidate answerers is online. Ranking candidate answerers canbe based at least partly on whether the potential answer has beencontacted in a recent time period or a contact frequency preference ofthe candidate answerer. Identification of another potential answer canbe received from a candidate answerer and the question can be sent tothe other candidate answerer. The respective relationship of a candidateanswerer to the asker can be based at least partly a degree of socialindirection between the two. One or more message formats appropriate forthe one or more candidate answerers in the group can be selected and thequestion can be sent using the selected message formats. The messageformat can be an instant message, electronic mail, a blog post, a shortmessage service message, a posted comment, a micro-blog post, a wallpost, or other social network message. The message format for acandidate answerer in the group can be selected based at least partly onthe time of day. The message format for a candidate answerer in thegroup can be selected based at least partly on a likelihood that thecandidate answerer will provide an answer based at least partly on themessage format. The information can include a description of arelationship between the asker and the particular answerer. Rankingcandidate answerers can further comprise selecting one or more candidateanswerers based on topics associated with the selected candidateanswerers.

Particular embodiments of the subject matter described in thisspecification can be implemented so as to realize one or more of thefollowing advantages. In various aspects, users can ask a question,either by instant message, email, web input, text message, or voice, forexample. The system then routes the question to a person in the user'ssocial affinity group most likely to be able to answer that question.Potential answerers may choose not to answer a question in order toprotect their privacy, or they may choose to answer but opt to provideonly minimal or no information that identifies them to others.

As compared to a traditional web search engine, where the challenge liesin finding the right document to satisfy a user's information need, thechallenge in a social search engine is to find the right person tosatisfy a user's information need. Further, while trust in a traditionalsearch engine can be based on authority, in a social search engine trustis based on intimacy. Other advantages include the ability to askquestions in natural language, the ability to receive a useful answereven if the question does not include identifiable or relevant topics,and the ability to receive more information than a specific answer to aquestion.

The details of one or more embodiments of the subject matter describedin this specification are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of thesubject matter will become apparent from the description, the drawings,and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates an example graphical user interface for interactingwith an asker.

FIG. 1B illustrates an example graphical user interface for interactingwith an answerer.

FIG. 1C illustrates another example graphical user interface forinteracting with an answerer.

FIG. 1D illustrates an example graphical user interface for obtainingpermission to insert an affiliate link in an answer.

FIG. 1E illustrates an example graphical user interface for providingsearch results and answers in response to queries.

FIG. 2 is a schematic diagram of an example social search engine system.

FIG. 3 is a flowchart of an example technique for providing a questionto an answerer.

FIG. 4 is a flowchart of an example technique for providing an affiliatelink in an answer.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

As used in this specification, a social affinity group of a user is agroup of other users with whom the user has relationships known by asystem. The relationships can be implicit or explicit, and in eithercase the relationships identify the group of users and the user as aproper subset of users of a network. Examples of groups identified byexplicit relationships include users belonging to a “friends lists” of auser in a social network, users that are “linked to” a user in aprofessional network, and users that otherwise explicitly identifythemselves as belonging to a group so as to form a group that isdistinct from the larger group of all users. Other types of explicitrelationships are possible. Examples of groups identified by implicitrelationships include users located near a common location (e.g., userswithin a predefined distance of a city center), users that have opinedon a particular product or article (e.g., users that have provided areview for a particular product) and users that are otherwise implicitlyidentified so as to form a group that is distinct from the larger groupof all users. Other types of implicit relationships are possible. Adegree of social indirection between a user and a member of the user'ssocial affinity group is a number of intermediate relationships betweenthe two. For example, in the case of explicit “friend list” typerelationships, the degree of social indirection is 0 if the member isthe user's friend, 1 if the member is a friend of a friend of the user,2 if the member is a friend of a friend of a friend of the user, and soon. The same applies for implicit relationships and combinations ofimplicit and explicit types of relationships. If two users have a degreeof social indirection between them that is greater than zero, the natureof their relationship may depend on the nature of their relationshipswith users to whom they are both related. For example, if user A anduser B have a degree of social indirection of 4 and both user A and userB have a relationship with user C, if user C has a lower degree ofsocial indirection to user A than user A has to user B, user A's trustof user B could be based on user B's relationship with user C. That is,if user B also has a close relationship to user C than user A is morelikely to trust answers from user B. Other types of measures of socialindirection are possible.

FIG. 1A illustrates an example graphical user interface (GUI) 100 for auser to pose questions and receive answers to questions from members ofthe user's social affinity group. Software implementing the GUI 100 canexecute on a client device which is a data processing apparatus such as,for example, a personal computer, a smart phone, a tablet computer, alaptop computer, and so on. The GUI 100 can be presented by a webbrowser or by other software executing on the client device. Input tothe GUI 100 can be by way of a physical or virtual keypad, voice, orvideo, for example. Other GUIs are possible, including GUIs for instantmessaging, electronic mail, micro-blogging, and short message service,for example. In some implementations, a software application canregister with one or more instant messaging services as a user. Suchautomated users of instant messaging services are commonly referred toas “bots”. Users who have the bot in their contact list for a particularinstant messaging service can send the bot questions. The bot caninteract with the system (see FIG. 2 below) in order to convey thequestion to the system and relay the answer from the system to the user.

By way of illustration, a user Bob submits a question to the system asshown in 104. In some implementations, the question is submitted astext, voice, video, or a combination of these. The question can alsoinclude one or more attachments, such as images, sound recordings,video, or documents, for example. Next, the system responds with message106 indicating that the system is looking for someone in Bob's socialaffinity group who can answer the question. (Messages to users from thesystem 200 are generated by the conversation manager 206, describedfurther below in reference to FIG. 2.) Notice that the system hasidentified a topic 106 a of the question. Generally speaking, the systemcan identify one or more topics for each submitted question. Topicidentification is described further below. The system identifies membersof Bob's social affinity group who have a level expertise in theidentified topic(s) and who are likely to provide an answer as potentialanswerers. One or more of the potential answers are contacted by thesystem over communication channels (e.g., instant message, electronicmail, blog post, short message service message, and so on) appropriatefor the potential answer. An example of an interaction with a potentialanswer is described in relation to FIG. 1B, below. When one of thepotential answers responds to the system with an answer, the systempresents message 108 which includes the answer along with, in someimplementations, information identifying the answerer as a member of theuser's social affinity group.

Answers can come from members of the user's social affinity group thathave different relationships to the asker. For instance, one answer maycome from someone with only a distant social connection to the asker(i.e., a high degree of social indirection); a second answer may comefrom a co-worker; and a third answer may come from afriend-of-friend-of-friend. In some implementations, the informationidentifying the answerer in the answer includes the answerer's full orpartial name 108 a, the answerer's age, their location 108 b (e.g.,city, state, country, region, and so on), and a description of a socialaffinity group relationship between the asker and the particularanswerer 108 c. In some implementations, the description of a socialaffinity group relationship between the asker and the particularanswerer identifies a friend in common that the asker is closest to(from a social indirection standpoint).

Some or all of the information describing the answerer can be omitted(e.g., at the request of the answerer), but providing this informationcan facilitate trust in the answer. In this illustration, the questionwas answered by Julia Thompson who is in San Francisco and is a friendof the user's friend John Smith. In some implementations, askers and/oranswerers can opt-in or opt-out of providing information with theirmessages that would identify them. Alternatively, askers and/oranswerers can limit the amount of identifying information that isprovided with their messages. By limiting the identifying information toa user's initials, their state, and a level of social indirection (e.g.,“K. from California is a friend of a friend of yours”), for example,users can strike a balance between maintaining their anonymity andgaining the trust of the recipient of their message.

In some implementations, the system allows the user to communicatedirectly with the answerer in order to, for example, thank the answerer,request clarifying information or follow-up with another question (110).In various implementations, the conversation manager 206, describedbelow, facilitates such communication. Throughout all of theuser/answerer interactions, the system maintains a tone of voice whichis friendly, polite, and appreciative. The system relies upon thegoodwill and interest of its users, so it is important to demonstratethe kind of (linguistic) behavior that can encourage these sentiments,in order to set a good example for users to adopt.

FIG. 1B illustrates an example GUI 120 for interacting with an answerer.Software implementing the GUI 120 can execute on a client device, forexample. The GUI 120 can be presented by a web browser or by othersoftware executing on the client device. Input to the GUI 120 can be byway of a physical or virtual keypad, voice, or video, for example. OtherGUIs are possible, including GUIs for instant messaging, electronicmail, micro-blogging, and short message service, for example. Acandidate answerer for a question is selected based on the potentialanswer's membership in the question asker's social affinity group andone or more topics for the question, for example. (Selection ofpotential answers is described further below.) In this illustration, thesystem has identified Julia Thompson as one of the candidate answerers.The system presents Julia with the message 124 which asks if she isavailable and able to answer a question regarding the identifiedtopic(s) of the question which, in this instance, includes the topic“hiking” 124 a. Julia is given the options to answer (e.g., by typing orspeaking “sure”), not answer (e.g., by typing or speaking “pass”), orforward the question to someone else in Julia's or the asker's socialaffinity group (e.g., by typing or speaking “forward”). In this example,Julia has typed “sure” 126 indicating that she is willing to answer thequestion regarding hiking. There is no shame in “passing” or“forwarding” a question, since nobody else knows that the question wassent to the potential answerer. Similarly, there is no social cost tothe user in asking a question, since the user is not directly imposingon a friend or requesting a favor; rather, the system plays the role ofthe intermediary who bears this social cost.

A key benefit of this interaction model is that the available set ofcandidate answerers is not just whatever users happen to be online atthe time a question is posted, but rather, the entire set of members ofa user's social affinity group that the system has contact informationfor. Because this kind of “reaching out” to candidate answerers has thepotential to become an unwelcome interruption if it happens toofrequently, in some implementations the system sends such requestsusually less than once a day to a given candidate answerer. In furtherimplementations, users can easily change their contact settings,specifying preferred frequency and time-of-day for such requests.

The system then presents the question 128 to Julia. In someimplementations, the question includes information describing the askersuch as the asker's name 128 a, age, and location 128 b. In someimplementations, the description of a social affinity group relationshipbetween the answerer and the particular asker is provided. Thisinformation can include a friend in common that the answerer is closestto (from a social indirection standpoint). The information can alsoinclude the social relationship between the asker and the answerer. Someor all of the information describing the asker can be omitted (e.g., atthe request of the asker) but, as mentioned previously, providing thisinformation can facilitate trust between users of the system.

The potential answerer can ask the system 130 why they were chosen toanswer the question (e.g., by typing or speaking “Why?”) and indicate apreference to the system that they do not want such questions in thefuture. This is like the real-world model of social information sharing:the person asking a question, or the intermediary in the system's role,is careful not to impose too much upon a possible answerer. The systemresponds with detailed information 132 regarding why the candidateanswerer was chosen. This information 132 can include the socialrelationship between the candidate answerer and the asker (“Bob is afriend of your friend Sally Johnson”), the relevance of the question'stopic(s) to the candidate answerer (“You know a lot about hiking and SanFrancisco”), and identification of similar interests between the askerand the answerer (“You and he have similar interests in sports.”), forexample. After reviewing this information, the candidate answerer canstill decline to answer or forward the question to another user if theyso desire.

Julia then provides an answer 134 to the question which is routed by theconversation manager 206 to the asker (e.g., Bob; see 108 in FIG. 1).The answer can include one or more of text, a Uniform Resource Locator(URL), an image, audio content, a video, an attached file, and othercontent, for example. The system then presents a message 136 thankingJulia for answering the question (and acknowledging if she had answeredthe question quickly). Julia can then correspond directly with the askerBob, if she so chooses, by typing or speaking his name followed be amessage. In some implementations, a user can participate in multiplequestion and answer conversations simultaneously. In theseimplementations, the multiple conversations could be visually separated(e.g., in separate windows) in a graphical user interface so that theuser would not need to explicitly tell the system who they wish tocommunicate with.

FIG. 1C illustrates another example GUI 140 for interacting with ananswerer. In some implementations, there are two interaction flowsavailable for answering a question. One flow involves the system sendinga candidate answerer a message (as illustrated above in regards to FIG.1B). A secondary flow of answering questions is similar tobulletin-board style interactions: a user sends a message to the system(e.g., “try”), and the system presents the user with a recent questionfrom their social affinity group which has not yet been answered and isrelated to topics for which the user has expertise. This mode involvesthe user initiating the exchange when the user is in the mood to try toanswer a question; as such, it has the benefit of an eager candidateanswerer. The GUI 140 includes a sampling of topics 142 a-c. In someimplementations, the topics are selected in order to develop informationregarding the expertise of the user. For example, if a user hasindicated that they have expertise in topic A but has not answered anyquestions related to this topic in a recent time frame or ever, thesampling of topics can include topic A so that the system can identifyif the user is still willing to answer questions regarding topic A.Selection of a topic (e.g., topic 142 b “cafes”) causes the presentationof a question 144 for the topic and, optionally, information thatidentifies the particular asker. The information can include the asker'sname (“Angela Smith”) and their social relationship to the answerer (“afriend of your friend Mike Jones”), for example. Other information suchas the asker's age and location can be included. In addition, any or allof the information identifying the asker can be omitted. The user cansubmit an answer to the question 144 by selecting the Answer button 146a. Or, the user can inform the system of another who is better able toanswer the question by selecting button 146 b. Finally, the user candecline to answer the question by selecting button 146 c. In someimplementations, the user can answer as many questions as they like. Insuch implementations the sampling of topics can change over time asquestions are answered.

FIG. 1D illustrates an example GUI 150 for obtaining permission toinsert an affiliate link in an answer. The GUI 150 allows the system toinsert one or more affiliate links in an answer if permission is givenby the answerer. In other implementations, the system can automaticallyinsert one or more affiliate links into the answer without obtainingpermission from the answerer. In so-called affiliate marketing, acontent provider is compensated when a customer that it delivered to amerchant website makes a purchase after linking from the contentprovider's website or application (as opposed to, for example, returningto the merchant website a week later to make a purchase, in which casethe content provider receives no commission). This allows web merchantsto efficiently market and sell goods in cooperation with contentproviders or other business partners, referred to herein as“affiliates.”

Through the merchant's website, for example, a content provider canenroll as an affiliate, and can then disseminate hyperlinks (or othertypes of interactive links) containing affiliate tags. Content providerspublish hyperlinks (or other types of interactive links) containingaffiliate tags that allow potential customers to link to the merchant'swebsite to initiate purchases of products or services from the merchant.Affiliate tags allow merchants to identify the website or softwareapplication of origin for users who execute a purchase and compensatethe associated affiliate. In various implementations, the affiliate tagincludes a unique identifier of the affiliate (e.g., assigned uponenrollment) and, optionally, the unique identifier of the selectedproduct or service. Software implemented on the merchant website usesthis information to identify the affiliate that referred the customer tothe merchant site. If the customer subsequently purchases the selectedproduct from the merchant site (e.g., by filling out an order form pageand submitting the order), software automatically credits the referringaffiliate for the referral by, for example, applying a commission to anaffiliate account. The referral commission can be automaticallygenerated based on a fixed percentage of the merchant's selling price,and is paid to the affiliate electronically on a periodic basis, forinstance.

Referring again to FIG. 1D, an answerer has provided an answer 152 toquestion 144. The question can be provided to the user as describedabove in relation to FIGS. 1B and 1C, for example. The system identifiesone or more entities (i.e., products, services, company names, merchantnames) referred to in the answer. An entity can be referred to bynatural language text (e.g., “Nikon D3X”) or the entity can be referredto by a URL (http://www.nikon.com/25442/D3X.html), for example. Anentity can be specific or general. That is, an entity can identify aspecific product, service, and/or company (e.g., “Joe & John's darkroast espresso”) or the entity can be general (e.g., “espresso”). If theentity is specific, it can be linked to a resource (e.g., a merchant'swebsite or application that sells the particular product or service).Otherwise, the entity can be linked to a resource that sells thecategory of product or service identified by the entity. By way ofillustration, the system has identified the company “Café Bébé Lapin” inthe answer 152. In further implementations, other content besides a linkto a resource can be inserted in an answer such, for example, a mapshowing the location of the entity, user or customer ratings of theentity, images and video for the entity or the entity'sproducts/services, and so on.

In some implementations, the system asks 152 the answerer if a link tothe entity can be inserted into their answer before the answer isdelivered to the asker. The answerer can approve the link assertion byselecting the button 156 a, or decline the link insertion by selectingbutton 156 b. If the link is allowed to be inserted, it is inserted withan affiliate code so that the system will receive credit for thereferral if the asker selects the link and purchases the product orservice. If an entity is referred to by a URL in the answer, the systemcan add an affiliate code to the URL.

The answer returned to the asker can include one or more words in theanswer highlighted (e.g., underlined) indicating that they are linked toa corresponding entity (e.g., product or service) on a merchant website,or the answer can include a separate advertisement for a merchant thatsells the entity. For example, the word “espresso” would be highlightedin the answer 152 returned to the user. User selection of the linkedwords or the advertisement will cause the user's application (e.g., webbrowser or other software application) to present the merchant's websitewith the entity in question. In some implementations, if the answererhas given permission to insert the affiliate link, the answer willindicate such to the asker. This may make it more likely that the askerwill select the affiliate link knowing that the answerer, who has asocial connection to them, approved the link. Affiliate links aredescribed further below.

FIG. 1E illustrates an example GUI 160 for providing search results andanswers in response to search engine queries. Software implementing theGUI 160 can execute on a client device, for example. The GUI 160 can bepresented by a web browser or by other software executing on the clientdevice. Input to the GUI 160 can be by way of a physical or virtualkeypad, voice, or video, for example. Other GUIs are possible. A usersubmits a query 162 “san francisco hotel pets” to a search enginethrough the GUI 160 in order to find pet friendly hotels in SanFrancisco. The search engine can be an interne search engine or anothertype of system that can respond to queries.

Search results 164 responsive to query 162 “san francisco hotel pets”are presented to the user in the GUI 160. For instance, search result166 is for the Hotel Nippon San Francisco and includes a snippet ofinformation about the hotel include the URL of the hotel's website.Likewise, search result 170 is for the Hotel Dalton. Search result 168is a previously submitted answer to a question that was deemed relatedto the topics of the search query 162. In some implementations, anexplanation 172 is included in the answer 168 as to why the answer wasdeemed relevant to the search query 162. In this example, theexplanation includes the original question with relevant topicshighlighted: “hotel” 168 c, “San Francisco” 168 d, and “pets” 168 e.Other types of explanations are possible, including ones that omit theoriginal question. The answer 168 can include information 168 a thatidentifies the user who answered the question if, for example, theanswerer is in the social affinity group of the user who submitted thequery 162. The answer 168 can also include affiliate links (e.g.,affiliate link 168 b which is a hyperlink to the website of the MetroInn hotel).

FIG. 2 is a schematic diagram of an example social search engine system200. In various implementations, the system includes one or more clientdevices (e.g., client devices 202 a-202 c), software components (e.g.,transport layer 214, question analyzer 204, conversation manager 206,routing engine 208, search result processor 210, affiliate linkgenerator 212, crawler/indexer 227 and classifiers 216), and one or moredata stores (e.g., question and answer archive 218, forward index 220,inverted index 222, and social graph 224). The client devices are dataprocessing apparatuses such as, for example, personal computers, smartphones, tablet computers, laptop computers, and so on. A softwarecomponent is a computer program or module that can be executed by one ormore data processing apparatuses in which the data processingapparatuses can be communicatively coupled by one or more networks. Dataprocessing apparatuses that execute the software components can residein different locations. Moreover, software components can be combinedinto fewer components or divided into additional components. The datastores comprise computer storage media coupled directly or indirectly(through one or more networks) to one or more of the data processingapparatuses that execute the software components. The data stored on thedata stores can be stored in fewer data stores or stored in additionaldata stores.

The crawler/indexer 227 can perform a number of indexing steps for a newuser in order to be able to direct appropriate questions to the user foranswering. Because questions will be routed to members of the user'ssocial affinity group, the first step involves indexing social affinitygroup information. The data structure responsible for this is the socialgraph 224. A new user has the option of connecting to commercial socialaffinity groups and importing members and relationships from the socialaffinity group into the social graph 224, or manually adding members andrelationships to the social graph 224. The crawler/indexer 227 indexesthis information and stores it in the social graph 222, which in someimplementations can be a fixed width Indexed Sequential Access Method(ISAM) index sorted by user identifier.

The crawler/indexer 227 can also index the topics about which the newuser has some level of knowledge or expertise. For example, topicalexpertise can be garnered from one or more of the following sourcesshown in TABLE 1. Other sources of topical expertise are possible.

TABLE 1 Topic Source Topics explicitly provided by the user which theybelieve they have expertise about. Topics explicitly provided by membersof the user's social affinity group. Topics parsed out from the user'sexisting profile for a social affinity group. Topics parsed out fromprofile pages of the user that have a known structure. A simple topicparsing algorithm that uses regular expressions devised for specificfields in the profile pages can be used, for example. Topics extractedfrom unstructured text on the user's existing online homepages or blogs,if provided. For unstructured text, a linear support vector machine(SVM) can be used to identify the general subject area of the text,while an ad-hoc named entity extractor can be used to extract morespecific topics, scaled by a variant term frequency-inverse documentfrequency (tf-idf) score. Topics extracted from the user's statusmessage updates for their social affinity group, and from the messagesthey send to members of their social affinity group. Topics extractedfrom images or videos associated with the user (e.g., posted to theuser's social affinity group). For example, a picture or video a foreignlandmark could imply an interest in travel or the city of the landmark.Topics can be extracted, for example, by associating objects identifiedin images with topic categories. Topics gleaned from articles or webpages linked to by the user.

A motivation for using these latter sources of topic information is asimple one: if you want to be able to predict what kind of content auser will generate, first examine the content they have generated in thepast. In this spirit, the crawler/indexer 227 uses web content not as asource of existing answers about a topic, but rather, as an indicator ofthe topics about which a user is likely able to give new answers ondemand. In essence, this involves modeling a user as acontent-generator, with probabilities indicating the likelihood that theuser will respond to questions about given topics. Each topic tassociated with a user u, has an associated score, depending upon theconfidence appropriate to the source of the topic. In addition, thecrawler/indexer 227 learns over time which topics not to send a userquestions about by keeping track of cases when the user: (1) explicitly“mutes” a topic; (2) declines to answer questions about a topic whengiven the opportunity; (3) receives negative feedback on his answerabout the topic from another user. The set of topics associated with auser is recorded in the forward index 220, which stores for each user, ascored list of topics, and a series of further scores about a user'sbehavior (e.g., responsiveness or answer quality). From the forwardindex 220, the crawler/indexer 227 constructs an inverted index 222. Theinverted index 222 stores each topic and a scored list of users thathave expertise in that topic. In addition to topics, the inverted index222 stores scored lists of users for features like answer quality andresponse time. Once the inverted index 222 and the social graph 224 fora user are created, the user is now active on the system and ready toask her first question.

The following high-level illustration follows the life of a question asit is processed by the system 200. A user (or “asker”) of a clientdevice, e.g., client device 202 b, begins by posing a question to thesystem 200 through GUI 100 or through an instant messaging service bot,for example. The question is sent from the client device 202 b to thetransport layer 214, where it can then sent to the conversation manager206. The transport layer 214 converts message formats to and from theirexternal representation (e.g., electronic mail, short message service,instant message, and so on) to a normalized internal representation.Once the conversation manager 206 determines that the message is aquestion, the conversation manager 206 sends the question to thequestion analyzer 204. The question analyzer 204 determines one or moreappropriate topic(s) for the question by analyzing the question.

In some implementations, the conversation manager 206 informs the askerof the topic(s) that were determined for the question, and provides theasker the opportunity to edit the topics. The conversation manager 206issues a routing suggestion request to the routing engine 208. Therouting engine 208 plays a role analogous to a ranking function in acorpus-based search engine. The routing engine 208 accesses the invertedindex 222 and the social graph 224 for a list of candidate answerers,and ranks them to reflect how well the routing engine 208 believes theycan answer the question, and how good of a match they are for the asker.The routing engine 208 returns a ranked list of routing suggestions tothe conversation manager 206, which then contacts the candidateanswerers in order to obtain an answer to the question. In someimplementations, if a candidate answerer declines to answer a questionor does so ineffectively (e.g., providing a terse or cryptic answer),the routing engine 208 can note such and potentially rank the user lowerin future ranked lists of candidate answerers for the same or similartopics.

In some implementations, the conversation manager 206 contacts eachcandidate answerer in order of the ranking beginning with the highestranked candidate answerer until one of the candidate answerers providesan answer. The conversation manager 206 can wait an amount of timebefore giving up on a given candidate answerer and moving on to the nextone. (Note that an answer to a question can be received even after theconversation manager 206 has moved on to another candidate answerer.) Byway of illustration, the amount of wait time can be based on thecommunication channel (e.g., instant message, electronic mail, blogpost, short message service message, and so on). The wait time can beshort (e.g., 30 seconds) if the communication channel is an instantmessage or short message server, or the wait time can be longer (e.g.,two minutes) if the communication channel is electronic mail, forinstance. The wait time can also be based on the candidate answerer'shistorical responsiveness for a given communication channel. Forexample, if a given candidate answer takes on average 10 minutes torespond to a question sent through electronic mail, the wait time can beadjusted in view of this. The wait time can be increased if, forexample, the system determines that the quality of the social matchbetween the asker and the answerer is high and would likely promote agood answer.

The asker and the answerer can use different communication channels. Insome implementations, if the asker uses an instantaneous message channelsuch as instant messaging and the answerer does not provide an answerfor long period of time, then the system can deliver the answer to theasker through a slower communication channel such as email, for example,rather than through instant messaging. In some implementations, thecommunication channel is selected to deliver a question or an answer isdependent on user preferences and/or the availability of both the askerand the answerer.

In other implementations, the conversation manager 206 contacts groupsof two or more candidate answerers in order of the ranking beginningwith the highest ranked candidate answerers until an answer is received.By way of illustration, assume the ranking of candidate answerers (fromhighest to lowest ranked) is A, B, C, D and E, and that the group sizeis two. The conversation manager 206 would contact candidate answerers Aand B first and, if no answer is received from either A or B after aperiod of group wait time has passed, the conversation manager 206 wouldthen contact C and D. If an answer is not received from C or D after aperiod of group wait time has passed, the conversation manager 206 wouldthen contact candidate answer E. (Note that an answer to a question canbe received even after the conversation manager 206 has moved on toanother group of candidate answerers.) Candidate answerers in a groupcan be contacted in parallel in some implementations.

The amount of group wait time can be based on the communication channelsused to contact the candidate answerers in a group such that the longestwait time is used. If candidate answerer A is contacted throughelectronic mail and candidate answerer B is contacted through shortmessage service, for instance, the group wait time would be based on theslower response channel—e.g., electronic mail. The group wait time canalso be based on the candidate answerers' historical responsiveness forthe communication channels used in the group such that the group waittime is adjusted in view of the candidate answerer who is anticipated totake the longest amount of time to respond.

In various implementations, the routing engine 208 uses a statisticalmodel for routing questions to candidate answerers. In someimplementations, the statistical model is a variant of an aspect modeland has two primary features. First, the model associates an unobservedclass variable tεT with each observation (i.e., the successful answer ofquestion q by user u_(i)). In other words, the probability p(u_(i)|q)that user i will successfully answer question q depends on whether q isabout the topics t in which u_(i) has expertise:

$\begin{matrix}{{p\left( u_{i} \middle| q \right)} = {\sum\limits_{t \in T}{{p\left( u_{i} \middle| t \right)}{p\left( t \middle| q \right)}}}} & (1)\end{matrix}$

A second feature of the model is that it defines a question-independentprobability of success for each potential asker/answerer pair (u_(i),u_(j)), based upon their degree of social indirection and the similarityof their profiles. In other words, a probability p(u_(i)|u_(j)) isdefined that user u_(i) will deliver a satisfying answer to user u_(j),regardless of the question.

A scoring function s(u_(i), u_(j), q) is defined as the composition ofthe two probabilities.

$\begin{matrix}{{s\left( {u_{i},u_{j},q} \right)} = {{{p\left( u_{i} \middle| u_{j} \right)} \cdot {p\left( u_{i} \middle| q \right)}} = {{p\left( u_{i} \middle| u_{j} \right)}{\sum\limits_{t \in T}{{p\left( u_{i} \middle| t \right)}{p\left( t \middle| q \right)}}}}}} & (2)\end{matrix}$

The goal in the ranking problem is: given a question q from user u_(j),return a ranked list of users u_(i)εU that maximizes s(u_(i), u_(j), q).

Note that the scoring function is composed of a question-dependentrelevance score p(u_(i)|q) and a question-independent quality scorep(u_(i)|u_(j)). This bears similarity to the ranking functions oftraditional corpus-based search engines. But unlike quality scores oftraditional search engines, the quality score described herein aims tomeasure intimacy rather than authority. And unlike the relevance scoresin corpus-based search engines, the relevance score described hereinaims to measure a user's potential to answer a question, rather than adocument's relevance to a query.

Computationally, this scoring function has a number of advantages. Itallows real-time routing because it pushes much of the computationoffline. In some implementations, the only component probability thatneeds to be computed at question time is p(t|q). Computing p(t|q) isequivalent to assigning topics to a question. In some implementations,the question analyzer 204 executes one or more probabilistic classifiers216 on the question at question time. (The question analyzer isdescribed further below.) The distribution p(u_(i)|t) assigns users totopics, and the distribution p(u_(i)|u_(j)) defines the social graph224. Both of these can be computed by the crawler/indexer 227 andupdated in the background as users answer questions. The componentmultiplications and sorting can also be performed at question time, butthese are easily parallelizable.

A comprehensive knowledge base is important for search engines asquestion distributions tend to have a long tail. In corpus-based searchengines, this is achieved by large-scale crawlers and thoughtful crawlpolicies. In the system 200, the knowledge base consists of peoplerather than documents, so the methods for acquiring and expanding acomprehensive knowledge base are quite different. The more active usersthere are, the more candidate answerers there are, and therefore themore comprehensive the coverage. More importantly, because the system200 looks for answerers in a user's social affinity group, the denserthe network is, the larger the effective knowledge base is. Thissuggests that the strategy for increasing the knowledge base of thesystem 200 involves creating a good experience for users so that theyremain active and are inclined to invite their friends.

Given a set of active users on the system 200, the effective breadth ofthe knowledge base depends upon designing interfaces and algorithms thatcan collect and learn an extended topic list for each user over time. Acentral technical challenge is to select the right user to answer agiven question from another user. In order to do this, the system 200learns the following for each user u_(i): (1) the topics t user u_(i)might be able to answer questions about p_(smoothed)(t|u_(i)); (2) theusers u_(j) to whom user u_(i) is connected p(u_(i)|u_(j)).

In various implementations, the system 200 computes the distributionp(t|u_(i)) of topics known by user u_(i) from one or more sources ofinformation, such as those illustrated in TABLE 1, for example. In someimplementations, the system can perform a topic strengthening algorithmat various times, the essential idea of which is: if a user hasexpertise in a topic and most of the members of the user's friends(e.g., members of the user's social affinity group having a small ornull degree of social indirection from the user) also have someexpertise in that topic, we have more confidence in that user's level ofexpertise than if the user were alone in his group with knowledge inthat area. Mathematically, for some user m, m's group of friends U, andsome topic t, if p(t|u_(i))≠0, thens(t|u_(i))=p(t|u_(i))+γΣ_(uεU)p(t|u), where γ is a small constant. The svalues can then be renormalized to form probabilities.

The system 200 can then perform smoothing algorithms the purpose ofwhich are to record the possibility that the user may be able to answerquestions about additional topics not explicitly associated with theuser. One algorithm uses basic collaborative filtering techniques ontopics (e.g., based on users with similar topics), another algorithmuses semantic similarity. In some implementations, semantic similarityis computed by using an approximation of distributional similaritycomputed over Wikipedia and other corpora; this serves as a proxymeasure of the topics' semantic relatedness.

Once all of these bootstrap, extraction, and smoothing methods areapplied, there is a list of topics and scores for a given user.Normalizing these topic scores so that Σ_(tεT)p(t|u_(i))=1, we have aprobability distribution for topics known by user u_(i). Using Bayes'Law, we compute for each topic and user:

$\begin{matrix}{{{p\left( u_{i} \middle| t \right)} = \frac{{p\left( t \middle| u_{i} \right)}{p\left( u_{i} \right)}}{p(t)}},} & (3)\end{matrix}$

using a uniform distribution for p(u_(i)) and observed topic frequenciesfor p(t). The system 200 collects these probabilities p(u_(i)|t) indexedby topic into the inverted index 222, which allows for easy lookup whena question comes in.

The system 200 can compute the connectedness between usersp(u_(i)|u_(j)) in a number of ways. Social proximity (e.g., the degreeof social indirection) and similarities in demographics and behavioramong members of the user's social affinity network can be taken intoaccount. By way of illustration, the factors considered can include onemore of the following:

-   -   Social connections (common friends and affiliations)    -   Demographic similarity    -   Profile similarity (e.g., common favorite movies)    -   Vocabulary match (e.g., instant messaging shortcuts)    -   Chattiness match (e.g., frequency of follow-up messages)    -   Verbosity match (e.g., the average length of messages)    -   Politeness match (e.g., use of “Thanks!”)    -   Speed match (e.g., responsiveness to other users)

Connection strengths between members of a social affinity group can becomputed using, for example, a weighted cosine similarity over thisfeature set, normalized so that Σ_(uiεU)p(u_(i)|u_(j))=1, and stored inthe social graph 224 for quick access at question time. Both thedistributions p(u_(i)|u_(j)) in the social graph 224 and p(t|u_(i)) inthe inverted index 222) can be updated as users interact with oneanother.

The question analyzer 204 determines a scored list of topics p(t|q) foreach question q representing the semantic subject matter of thequestion. In some implementations, this is the only probabilitydistribution in equation (2) that is computed at question time. The roleof the question analyzer 204 is to learn enough about the question thatit may be sent to appropriately interested and knowledgeable humananswerers.

In various implementations, the one or more of the classifiers 216 inTABLE 2 can be run on each question. Other classifiers are possible.

TABLE 2 Classifier Description Non- This classifier determines if theinput is not actually a Question question (e.g., is it a misdirectedmessage, a sequence of Classifier keywords, etc.); if so, the user isasked to submit a new question. Inappropriate This classifier determinesif the input is obscene, Question commercial spam, or otherwiseinappropriate content for a Classifier public question-answeringcommunity; if so, the user is warned and asked to submit a new question.Trivial This classifier determines if the input is a simple factualQuestion question which can be easily answered by existing commonClassifier services (e.g., “What time is it now?”, “What is theweather?”, etc.); if so, the user is offered an automatically generatedanswer resulting from traditional web search. Location This classifierdetermines if the input is a question which Sensitive requires knowledgeof a particular location, usually in Classifier addition to specifictopical knowledge (e.g., “What's a great sushi restaurant in Austin,TX?”); if so, the relevant location is determined and passed along tothe routing engine 208 with the question.

The list of topics relevant to a question can then be produced bymerging the output of one or more distinct topic mapper algorithms, eachof which suggests its own scored list of topics. One or more of thetopic mappers described in TABLE 3 can be used. Other topic mappers arepossible.

TABLE 3 Topic Mapper Description Keyword This passes any terms in thequestion which are matches Match with topics associated with a userthrough a classifier which is trained to determine whether a given matchis likely to be semantically significant or misleading. For example, ifthe string “camel wrestling” occurs in a question, it is likely to besemantically relevant to a user who has “camel wrestling” as a profiletopic; whereas the string “running” may be too ambiguous to use in thismanner without further validation, since it might errantly route aquestion about “running a business” to a user who knows about fitness.Taxonomy This classifies the question text into a taxonomy of popularquestion topics using an SVM trained on an annotated corpus of severalmillions questions. Salient Term This extracts salient phrases from thequestion - using a noun-phrase chunker and a tf-idf-based measure ofimportance - and finds semantically similar user topics. User Tag Thistakes any user “tags” provided by the asker (or by any would-beanswerers), and maps these to semantically- similar user topics.

In various implementations, the output distributions of the topicmappers can be combined by weighted linear combination. Other ways ofcombining the output distributions are possible.

Ranking is performed by the routing engine 208 which determines anordered list of users (or “candidate answerers”) who should be contactedto answer a question given the asker of the question and the informationabout the question derived by the question analyzer 204. The coreranking function is, in some implementations, equation (2); the routingengine 208 can compute equation (2) for candidate answerers and sort thecandidate answerers according to their scores. In variousimplementations, factors that can determine this ranking of users areTopic Expertise p(u_(i)|q), Connectedness p(u_(i)|j_(i)), andAvailability.

Topic Expertise: The routing engine 208 finds the subset of users whoare semantic matches to the question: those users whose associatedtopics indicate expertise relevant to the topics which the question isabout. Users whose associated topics are closer matches to thequestion's topics are given higher rank. For questions which arelocation-sensitive, only users with matching locations in their profilesare considered.

Connectedness: Second, the routing engine 208 scores each user accordingto the degree to which the user—as a person, independently of theirtopical expertise—is a good “match” for the asker for this informationquestion. The goal of this scoring is to optimize the degree to whichthe asker and the answerer feel kinship and trust, arising from theirsense of connection and similarity, and meet each other's expectationsfor conversational behavior in the interaction.

Availability: Third, the routing engine 208 prioritizes candidateanswerers in such a way so as to optimize the chances that the presentquestion will be answered, while also preserving the available set ofanswerers as much as possible by spreading out the answering load acrossthe user base. This involves factors such as prioritizing users who arecurrently online (e.g., via instant messaging presence data, smart phoneusage, and so on), who are historically active at the presenttime-of-day, and who have not been contacted recently with a request toanswer a question.

The routing engine 208 process can be parallelized such that each shardin the inverted index 222 computes its own ranking for users in thatshard, and sends the top users to the routing engine 208. This isscalable as the user base grows, since as more users are added, moreshards can be added.

Given this ordered list of candidate answerers, the routing engine 208can in some implementations filter out candidate answerers who shouldnot be contacted according to guidelines for preserving a high-qualityuser experience. These filters operate largely as a set of rules: do notcontact users who prefer to not be contacted at the present time of day;do not contact users who have recently been contacted as many times astheir contact frequency settings permit; and so on. The ordered list ofcandidate answerers who survive this filtering process are returned tothe conversation manager 206. The conversation manager 206 then proceedsto contact one or more candidate answerers inquiring as to whether theywould like to answer the present question and continuing until an answeris provided and returned to the asker.

In some implementations, the system 200 includes a search resultprocessor 210. The search result processor 210 identifies previouslysubmitted answers in a question and answer archive 218 that are relevantto a search query and provides them to invoking processes (e.g., searchengines). The archive 218 is a store of previously submitted questionsand corresponding answers that have been routed through the conversationmanager 206. The archive 218 can be indexed by topic and by words orn-grams that appear in the answers, for example. (An n-gram is asubsequence of n items from a given sequence. The items in question canbe phonemes, syllables, letters, words or base pairs.) In furtherimplementations, the archive 218 can include other content from sourcessuch as blog posts and micro blog posts. The other content can beidentified and provided in a similar fashion to answers. A search query,such as a search query submitted by a user to a search engine, isreceived by search result processor 210. The search result processor 210identifies one or more answers (or other content) in the archive 218that are relevant to the search query and returns these to the invokingprocess. The search result processor 210 determines one or more topicsfor the search query based on the text of the search query. Topics canbe determined, for example, as described above in regards to thequestion analyzer 204. Likewise, one or more topics can be determinedfor each answer in the archive 218 ahead of time using similar ordifferent techniques. The relatedness of a search query's topics to ananswer's topics can be determined in a number of different ways. Thepresence of keywords in a search query can be used to identify questionsand answers that have the same keywords, for instance. In addition, thepresence of a URL in an answer that is included in a result set that asearch engine would return for the search query can indicate relatednessof the answer to the search query. In further implementations, thearchived answers can be ranked according to relevance to a searchparticular query.

Other ways of determining the similarity between a search query and ananswer are possible including, for instance, basing similarity on asimilarity of n-grams in the search query and the answer rather thantopics. The search result processor 210 can provide a relevance scorefor each identified answer that indicates how relevant the answer is tothe search query. This score can be derived from the determinedsimilarity of an answer to the search query, for example. An answer'srelevance score can be used by the invoking process to determine a rankof an answer in a listing of search results for the search query. Insome implementations, the system 200 includes an affiliate linkgenerator 212.

The affiliate link generator 212 adds affiliate links to answers (orother content) that are provided by the conversation manager 206 toaskers or by the search result processor 210 to invoking processes. Insome implementations, the affiliate link generator 212 can add anaffiliate link to an answer for one or more identified entities in theanswer for which the system has affiliate tags. As described above,affiliate tags allow merchants to identify the website or softwareapplication of origin for users who execute a purchase and compensatethe associated affiliate. In various implementations, the affiliate tagincludes a unique identifier of the affiliate (e.g., assigned uponenrollment) and, optionally, the unique identifier of the selectedproduct or service. An entity can be referred to by natural languagetext or the entity can be referred to by a URL, for example. Entitiescan be identified in an answer (or other content) by textually searchingfor URLs, product names, service names, or company names in the answer(or other content) that match names for which the system 200 has anentity tags. The matching does not have to be exact: synonyms,misspellings, and filler text can be taking into account and compensatedfor in the text matching algorithm. Other ways of identifying entitiesin text are possible.

In other implementations, the affiliate link generator 212 can add anaffiliate link to an answer for one or more identified entities in theanswer for which the system has affiliate tags only if the correspondingquestion appears to be seeking a recommendation for a product orservice. A question can be classified according to its syntax and thepresence of certain keywords or punctuation. For example, the sentencesin a question could be classified as questions or non-questionsaccording to the presence of a question mark at the end of the sentenceor the appearance at the beginning of “who”, what”, “when”, “where”,“does”, “why”, and so on. Further classification could be effected bymonitoring subjective keywords within question such as “best”, “good”,and so on. More detailed classification may be performed by constructingstatistical language models or supervised classifiers based on trainingsets. The training sets may contain hits, wherein a recommendationseeker receives an answer containing an entity, and misses wherein theanswer does not contain such.

FIG. 3 is a flowchart of an example technique for providing a questionto an answerer. A question is received, e.g., by the conversationmanager 206, from an asker in which the question is associated with oneor more topics (302). The topics can be determined by the questionanalyzer 204, for example. Candidate answerers are ranked, e.g., by therouting engine 208, based at least partly on each answerer's respectiverelationship to the asker and a respective probability that the answererwill provide a satisfactory answer to the question (304). The questionis sent successively to groups of one or more candidate answerers, e.g.,by the conversation manager 206, according to the ranking until ananswer is received from a particular one of the candidate answerers(306). The received answer is then sent to the asker, e.g., by theconversation manager 206, in which the answer includes information thatidentifies the particular answerer (308).

FIG. 4 is a flowchart of an example technique for providing an affiliatelink in an answer. An answer to a question is received from an answerer,e.g., by the conversation manager 206 (402). An entity is identified inthe answer, e.g., by the affiliate link generator 212, in which theentity refers to a product or a service (404). Permission is obtainedfrom the answerer, e.g., by the conversation manager, to provide aninteractive link for the entity in the answer to a resource from whichthe entity can be obtained (406). A query submitted by a user isreceived, e.g., by the search result processor 210, and it is determinedwhether query is related to the entity (408). An answer is provided,e.g., by the search result processor 210, including the link to theresource, as part of search results that are responsive to the query.

Embodiments of the subject matter and the operations described in thisspecification can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Embodiments of the subject matterdescribed in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on computer storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate physical components or media (e.g., multiple CDs, disks, orother storage devices).

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), an inter-network (e.g., the Internet), andpeer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits data (e.g., an HTML page) to a clientdevice (e.g., for purposes of displaying data to and receiving userinput from a user interacting with the client device). Data generated atthe client device (e.g., a result of the user interaction) can bereceived from the client device at the server.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular embodiments of particular inventions.Certain features that are described in this specification in the contextof separate embodiments can also be implemented in combination in asingle embodiment. Conversely, various features that are described inthe context of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous.

In further implementations, the system can match users based on existingcontent on the web rather than questions or answers submitted directlyto the system. By way of example, the system can initiate a conversationbetween two users where one had posted a question on one forum but therewas a candidate answerer who had written on relevant topics on anotherforum. The system might also give the questioner more visibility intothe types of users that might receive the question and allow the askerto take more control over who might see the question and who would bebarred from seeing the question. For example, an asker might be giventhe option of saying send this to users such as their professors but notto friends of someone they are dating.

1. A method implemented by data processing apparatus, the methodcomprising: receiving a question from an asker in which the question isassociated with one or more topics; selecting candidate answerers basedat least partly on each answerer's respective relationship to the asker;sending the question successively to groups of one or more candidateanswerers until an answer is received from a particular one of thecandidate answerers; and sending to the asker the received answer andinformation that identifies the particular answerer.
 2. The method ofclaim 1 in which selecting candidate answerers is based at least partlyon a time of day and whether a candidate answerer in the candidateanswerers has been historically active during the time of day or prefersnot to be contacted during the time of day.
 3. The method of claim 1 inwhich selecting candidate answerers is based at least partly on awhether a candidate answerer is in the candidate answerers is online. 4.The method of claim 1 in which selecting candidate answerers is based atleast partly on whether the candidate answerer has been contacted in arecent time period or a contact frequency preference of the candidateanswerer.
 5. The method of claim 1, in which sending further comprisesreceiving from a candidate answerer identification of another potentialanswer and sending the question to the other candidate answerer.
 6. Themethod of claim 1 in which the respective relationship of a candidateanswerer to the asker is based at least partly a degree of socialindirection between the two.
 7. The method of claim 1 in which sendingfurther comprises selecting one or more message formats appropriate forthe one or more candidate answerers in the group and sending thequestion using the selected message formats.
 8. The method of claim 7 inwhich a message format is an instant message, electronic mail, a blogpost, a short message service message, a posted comment, a micro-blogpost, a wall post, or other social network message.
 9. The method ofclaim 7 in which the message format for a candidate answerer in thegroup is selected based at least partly on the time of day.
 10. Themethod of claim 7 in which the message format for a candidate answererin the group is selected based at least partly on a likelihood that thecandidate answerer will provide an answer based at least partly on themessage format.
 11. The method of claim 1 in which the informationincludes a description of a relationship between the asker and theparticular answerer.
 12. The method of claim 1 in which selectingcandidate answerers further comprises selecting one or more candidateanswerers based on topics associated with the selected candidateanswerers.
 13. A system comprising: a computer-readable medium includinginstructions; and data processing apparatus coupled to thecomputer-readable medium and able to execute the instructions to performoperations comprising: receiving a question from an asker in which thequestion is associated with one or more topics; selecting candidateanswerers based at least partly on each answerer's respectiverelationship to the asker; sending the question successively to groupsof one or more candidate answerers until an answer is received from aparticular one of the candidate answerers; and sending to the asker thereceived answer and information that identifies the particular answerer.14. The system of claim 13 in which selecting candidate answerers isbased at least partly on a time of day and whether a candidate answererin the candidate answerers has been historically active during the timeof day or prefers not to be contacted during the time of day.
 15. Thesystem of claim 13 in which selecting candidate answerers is based atleast partly on a whether a candidate answerer is in the candidateanswerers is online.
 16. The system of claim 13 in which selectingcandidate answerers is based at least partly on whether the candidateanswerer has been contacted in a recent time period or a contactfrequency preference of the candidate answerer.
 17. The system of claim13 in which sending further comprises receiving from a candidateanswerer identification of another potential answer and sending thequestion to the other candidate answerer.
 18. The system of claim 13 inwhich the respective relationship of a candidate answerer to the askeris based at least partly a degree of social indirection between the two.19. The system of claim 13 in which sending further comprises selectingone or more message formats appropriate for the one or more candidateanswerers in the group and sending the question using the selectedmessage formats.
 20. The system of claim 19 in which a message format isan instant message, electronic mail, a blog post, a short messageservice message, a posted comment, a micro-blog post, a wall post, orother social network message.
 21. The system of claim 19 in which themessage format for a candidate answerer in the group is selected basedat least partly on the time of day.
 22. The system of claim 19 in whichthe message format for a candidate answerer in the group is selectedbased at least partly on a likelihood that the candidate answerer willprovide an answer based at least partly on the message format.
 23. Thesystem of claim 13 in which the information includes a description of arelationship between the asker and the particular answerer.
 24. Thesystem of claim 13 in which selecting candidate answerers furthercomprises selecting one or more candidate answerers based on topicsassociated with the selected candidate answerers.
 25. Acomputer-readable medium including instructions operable to cause dataprocessing apparatus to perform operations comprising: receiving aquestion from an asker in which the question is associated with one ormore topics; selecting candidate answerers based at least partly on eachanswerer's respective relationship to the asker; sending the questionsuccessively to groups of one or more candidate answerers until ananswer is received from a particular one of the candidate answerers; andsending to the asker the received answer and information that identifiesthe particular answerer.